package persistentie;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

import domein.PersonageCategorie;

/**
 * Regelt het databaseverkeer met betrekking tot de personagecategorieen
 * @author Bart Beyers
 * @since 22/02/2011
 */
public class PersonageCategorieMapper {
	private Connection connection;

	/**
	 * Geeft alle mogelijke PersonageCategorieen terug
	 * @return De lijst van mogelijke PersonageCategorieen
	 */
	public List<PersonageCategorie> geefCategorieen() {
		List<PersonageCategorie> categorieen = new ArrayList<PersonageCategorie>();

		try {
			connection = PersistentieController.getInstance().getConnection();
			Statement statement = connection.createStatement();
			
			// Alles uit de tabel PersonageCategorie halen
			ResultSet resultset = statement.executeQuery("SELECT * FROM PersonageCategorie ORDER BY naam");
			
			// De individuele categorieen afzonderen en aanmaken
			while (resultset.next()) {
				String naam = resultset.getString("naam");
				String omschrijving = resultset.getString("omschrijving");
				int lichaamspunten = resultset.getInt("lichaamspunten");
				int verdedigingspunten = resultset.getInt("verdedigingspunten");
				int snelheid = resultset.getInt("snelheid");
				int aanvalspunten = resultset.getInt("aanvalspunten");

				PersonageCategorie pc = new PersonageCategorie(naam,omschrijving,lichaamspunten,verdedigingspunten,snelheid,aanvalspunten);
				categorieen.add(pc);
			}
			statement.close();
			
		} catch (SQLException sqlException) {
			JOptionPane.showMessageDialog(null, sqlException.getMessage(), "Fout", JOptionPane.ERROR_MESSAGE);
		}
		return categorieen;
	}

	/**
	 * Geeft 1 gekozen PersonageCategorie
	 * @param naam Naam van de te zoeken categorie
	 * @return de gekozen PersonageCategorie
	 */
	public PersonageCategorie geefCategorie(String naam) {
		PersonageCategorie pc = null;

		try {
			connection = PersistentieController.getInstance().getConnection();
			
			Statement statement = connection.createStatement();
			
			// Alle informatie die met de naam "naam" te maken heeft ophalen
			ResultSet resultset = statement.executeQuery("SELECT * FROM PersonageCategorie WHERE naam='" + naam + "'");
			
			if (resultset.next()) {
				String catNaam = resultset.getString("naam");
				String omschrijving = resultset.getString("omschrijving");
				int lichaamspunten = resultset.getInt("lichaamspunten");
				int verdedigingspunten = resultset.getInt("verdedigingspunten");
				int snelheid = resultset.getInt("snelheid");
				int aanvalspunten = resultset.getInt("aanvalspunten");
				
				pc = new PersonageCategorie(catNaam, omschrijving,lichaamspunten,verdedigingspunten,snelheid,aanvalspunten);
			}
			statement.close();
			
		} catch (SQLException sqlException) {
			JOptionPane.showMessageDialog(null, sqlException.getMessage(), "Fout", JOptionPane.ERROR_MESSAGE);
		}
		return pc;
	}
}
